import "mod_draw";
import "mod_key";
import "mod_map";
import "mod_proc";
import "mod_grproc";
import "mod_screen";
import "mod_text";
import "mod_file";
import "mod_video";
import "mod_string";
import "mod_debug";
import "mod_say";
//
// Prueba de una barra de herramientas para el editor de mapas
//

GLOBAL
	int png_bg;
	
	STRUCT toolbar
		int activa = false;		// TRUE - FALSE
		int txts = false;			// Mostrar Textos TRUE - FALSE
		int posy = 12;				// Posicion maxima
		int delay = 0;				// tiempo inactiva
		int delay_off = 90;		// tiempo en desaparecer
		int seleccion =  1;		// Seleccion actual del cursor
	END
	
END

BEGIN
	scale_mode = scale_nofilter;
	set_mode(320,240,16,mode_window);
	
	png_bg = load_png("png/bg.png");
	put_screen(0, png_bg);

	// inicia la barra de herramientas
	toolbar();
	
	

	LOOP
	
		
	
		IF ( key ( _esc ) )
			exit();
		END
	
		FRAME;
		
	END

END

PROCESS toolbar()
//
// Control de la barra de herramientas
// Se muestra y esconde al pulsar SPACE
//

PRIVATE
	int key_lock = true;
END

BEGIN

	priority = 2;

	file = 0;
	graph = load_png ( "png/toolbar-bg.png" );
	
	x = 160;
	y = 12;
	
	// crea los iconos del menu
	toolbarIcon(1,1);
	toolbarIcon(2,2);
	toolbarIcon(3,3);
	
	toolbarCursor();
	
	toolbarTooltip();
	
	write_var(0,160,240,7,toolbar.txts);

	LOOP
	
		// barra activa
		IF ( toolbar.activa )
			// la desactiva con space
			IF ( key ( _space ) and key_lock == false)
				toolbar.activa = false;
				toolbar.txts  = false;
				key_lock = true;
			END
			// la desactiva si pasa el tiempo
			IF ( toolbar.delay > toolbar.delay_off )
				toolbar.activa = false;
				toolbar.txts  = false;
			END
			
			// lo hace aparecer en pantalla si esta afuera
			IF ( y < toolbar.posy )
				y += 4;
			ELSEIF ( y >= toolbar.posy )
				toolbar.txts  = true;
			END
			
			// MANEJA EL CURSOR DE SELECCION
			IF ( key ( _left ) and not key_lock )
				key_lock = true;
				toolbar.seleccion --;
				toolbar.delay = 0;
				IF ( toolbar.seleccion < 1 )
					toolbar.seleccion = 3;
				END
			END
			
			IF ( key ( _right ) and not key_lock )
				key_lock = true;
				toolbar.seleccion ++;
				toolbar.delay = 0;
				IF ( toolbar.seleccion > 3 )
					toolbar.seleccion = 1;
				END
			END
			
			
		//barra inactiva
		ELSE
			// la activa con space
			IF ( key ( _space ) and key_lock == false)
				toolbar.activa = true;
				toolbar.delay = 0;
				toolbar.seleccion = 1;
				key_lock = true;
			END
			
			toolbar.txts = false;
			
			// lo hace salir de la pantalla cuando se desactiva
			IF ( y > -12 )
				y -= 4;
			END
			
		END
		
		// desbloquea las teclas si no se apretan
		IF ( key_lock and not key ( _space ) and not key ( _left ) and not key ( _right ) )
			key_lock = false;
		END
		
		toolbar.delay++;
		
		frame;
		
	END

END

PROCESS toolbarIcon (icono, posicion)
//
// icono del menu
//
BEGIN

	priority = 1;

	// grafico
	file = 0;
	SWITCH ( icono )
		CASE 1:
			graph = load_png ( "png/icon_map.png" );
		END
		CASE 2:
			graph = load_png ( "png/icon_folder.png" );
		END
		CASE 3:
			graph = load_png ( "png/icon_disk.png" );
		END
	END
	
	
	// posicion
	z = father.z - 10;
	y = father.y + 1;
	SWITCH ( posicion )
		CASE 1:
			x = 10;
		END
		CASE 2:
			x = 30;
		END
		CASE 3:
			x = 50;
		END
	END
	
	LOOP
		y = father.y + 1;
		frame;
	END

END

PROCESS toolbarCursor()
//
// Descripcion del Proceso
//

BEGIN

	z = father.z -5;
	graph = load_png("png/toolbar-cursor.png");

	LOOP
	
		y = father.y;
	
		SWITCH ( toolbar.seleccion )
			CASE 1:
				x = 10;
			END
			CASE 2:
				x = 30;
			END
			CASE 3:
				x = 50;
			END
		END
		
		frame;
		
	END

END

PROCESS toolbarTooltip()
//
// Muestra texto de ayuda dependiendo la pos del cursor
//

PRIVATE
	string textos[4]=
		"Menu",
		"Nuevo Mapa",
		"Abrir",
		"Guardar";
		
	txt_id;
END

BEGIN

	LOOP
	
		IF ( toolbar.txts == true )
			txt_id = write ( 0, 318, 13, 5, textos[toolbar.seleccion] );
		END
	
		frame;
	
		// si quedo un texto lo borra
		if ( txt_id <> 0 )
			delete_text(txt_id);
			txt_id = 0;
		end
		
	END

END

